title: 犀利开发—jQuery内核详解与实践-3_高效选择的技巧与原理
1.1 认识jQuery
1.2 jQuery初步体验
1.3 jQuery核心特性
1 设计目标
2 目标实现
1 起源——原型继承
2 生命——返回实例
3 学步——分隔作用域
4 生长——跨域访问
5 成熟——选择器
6 延续——迭代器
7 延续——功能扩展
8 延续——参数处理
9 涅槃——名字空间
1 简单但很复杂的黑洞
2 盘根错节的逻辑关系
3 jquery构造器
4 生成DOM元素
5 引用DOM元素
4伪类 5伪对象 6用户界面-4 7结构性-4 8其他(:not(s),:target-4
cssQuery
解决两大难题:支持css1,css2,css3;支持不同类型的主流浏览器
永远返回一个数组对象,所以 if($(‘tr’).length>0)
简单、包含、筛选、内容、属性、表单
#id element .class * selector1,selector2,selector3
更高效的方法:结合两者
var all=document.getElementByTagName(“*”)
$(all).css(“color”,”red”)
选择器 、子选择器>、相邻选择器+、兄弟选择器~
var Expr=Sizzle.selectors={
relative:{
"+":function(){},
">":funciton(){},
}
}
function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){}
function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){}
:nth-child :first-child :last-child :only-child
var Expr=Sizzle.selectors={
order:["ID","NAME","TAG"],
match:{
ID:/ /,CLASS://,NAME://,
}
}
:first,:last,:not,:even,:odd,:eq,:gt,:lt,:header,:animated
var Expr=Sizzle.selectors={
setFilters:{
first:function(elem,i){return i===0},
},
filter:{
POS:function(elem,match,i,array){
var name=match[2],filter=Expr.setFilters[name]
if(filter){
return filter(elem,i,match,array)
}
}
}
}
:contains,:empty,:has,:parent
var Expr=Sizzle.selectors={
filters:{
parent:function(elem){return !!elem.firstChild},
empty:function(elem){return !elem.firstChild},
has:function(elem,i,match){},
PSEUDO:function(elem,match,i,array){
var name=match[1],filter=Expr.filters[name]
if(filter){}
else if(name==="contains"){}
else if(name==="not"){return true}
}
}
}
:hidden,:visible
Sizzle.selectors.filters.hidden=function(elem){return elem.offsetWidth===0||elem.offsetHeight===0}
Sizzle.selectors.filters.visible=function(elem){return }
Sizzle.selectors.filters.animated=function(elem){return jQuery.grep(…)}
[a],[a=v],!=,^=,$=,*=,[a1][a2][aN]
:input,:text,:password,:radio,:checkbox,:submit,:image,:reset,:button,:file,:hidden
:enable,:disable,:checked,:selected